Шаг 48 - Встроенные свойства документов MSOffice

Хорошо писать прикладные программы для MSWord - вставил куда-либо поле {AUTOR} и получил информацию о том, кто автор документа (иногда, правда, это делать опасно - всплывают прелюбопытные подробности). А в других программах MSOffice? Сколько, например символов в таблице Excel? Так просто не получится... :-(

Для этой задачи может помочь коллекция BuiltInDocumentProperties. В MSOffice97 определено 30 (а не 28, как в документации) свойств, названия которых приведены в таблице. Все эти свойства могут быть прочитаны в любом документе MSOffice, вне зависимости от того, какая программа документ породила. Кроме чтения программным путем, MSWord (это уже упоминалось выше) позволяет вывести значение свойств документа в сам документ при помощи полей, но это к программированию на прямую не относится.

  Название свойства Назначение
1 Title Заголовок
2 Subject Предмет
3 Author Автор (создавший документ)
4 Keywords Ключевые слова
5 Comments Комментарии
6 Template Шаблон документа
7 Last Author Тот, кто последний сохранил документ
8 Revision Number Число входов для редактирования
9 Application Name Название приложения, обрабатывающего документ
10 Last Print Date Дата и время последней печати
11 Creation Date Дата создания
12 Last Save Time Дата и время последнего сохранения
13 Total Editing Time Общая продолжительность редактирования (минуты)
14 Number of Pages Число страниц
15 Number of Words Число слов
16 Number of Characters Число символов
17 Security Секретность
18 Category Категория
19 Format Формат
20 Manager Менеджер
21 Company Компания
22 Number of Bytes Размер файла в байтах в момент последнего сохранения
23 Number of Lines Число строк
24 Number of Paragraphs Число абзацев
25 Number of Slides Число слайдов (определено в PowerPoint, в остальных, вероятно, не используется)
26 Number of Notes Число заметок к слайдам (определено в PowerPoint, в остальных, вероятно, не используется)
27 Number of Hidden Slides Число скрытых слайдов (определено в PowerPoint, в остальных, вероятно, не используется)
28 Number of Multimedia Clips Число клипов (определено в PowerPoint, в остальных, вероятно, не используется)
29 Hyperlink Base База гиперссылок
30 Number of Characters (with spaces) Общеечисло символов, включая пробелы

Стоит иметь в виду, что при обращении к значению свойства, которое для данного документа не определено, также возникает ошибка выполнения с кодом -2147467259 (знак минус!), что требует аккуратной работы (см. примеры обработчиков ошибок в предыдущем шаге). Также приводит к ошибке попытка записи в свойство, которое данным приложением не поддерживается, что можно установить методом проб и ошибок. Но имена выводятся для всех свойств правильно. Практически полезной может оказаться такая процедура:

Sub test()

On Error GoTo NotDefined
' В следующей стороке ActiveDocument стоит заменть на ActiveWorkbook, etc
For Each prop In ActiveDocument.BuiltInDocumentProperties
	With prop
		PName = .Name
		PValue = .Value
		PType = .Type
		Debug.Print PName & " = " & PValue & " [" & PType & "]"
	End With
Next
Exit Sub
' ОБРАБОТЧИК ОШИБОК
NotDefined:
PValue = "Value not defined"
Resume Next
End Sub

Ее польза в том, что можно исследовать, какие свойства определены для данного типа документов, не появились ли новые свойства с выходом новой версии MSOffice (и не потерялись ли старые :-) ), какие у них типы. Тип выводится в виде целого числа. Результат ее работы (копия Debug Window):

Title = Свойства документов MSOffice [4]
Subject =  [4]
Author = DD [4]
Keywords =  [4]
Comments =  [4]
Template = Normal [4]
Last author = DD [4]
Revision number = 4 [4]
Application name = Microsoft Word 8.0 [4]
Last print date = Value not defined [3]
Creation date = 17.03.00 14:13:00 [3]
Last save time = 17.03.00 15:06:00 [3]
Total editing time = 67 [1]
Number of pages = 3 [1]
Number of words = 1183 [1]
Number of characters = 7702 [1]
Security = 0 [1]
Category =  [4]
Format =  [4]
Manager =  [4]
Company = SBC [4]
Number of bytes = 45056 [1]
Number of lines = 235 [1]
Number of paragraphs = 161 [1]
Number of slides = Value not defined [1]
Number of notes = Value not defined [1]
Number of hidden Slides = Value not defined [1]
Number of multimedia clips = Value not defined [1]
Hyperlink base =  [4]
Number of characters (with spaces) = 8995 [1]

Соответствие числа и предопределенных констант типов - ниже:

1 	msoPropertyTypeNumber
2 	msoPropertyTypeBoolean
3 	msoPropertyTypeDate
4 	msoPropertyTypeString
5 	msoPropertyTypeFloat

Свойства, недоступные в данном приложении, будут иметь вид: Number of slides = Value not defined [1]

Написал и прислал шаг Dmitri Drozdov.

Hosted by uCoz